

/**
 * aabbccccdddaaassa
 * 一个字符串，由重复的子字符串组成，输入数字n，要求返回长度排第n名的子字符串的长度
 * 
 * str 字符串
 * n 长度排第n名的字符
*/
function handle(str, n) {
	let pool = []
	let cache = []
	let resObj = {}
	let strArr = str.split('')
	
	strArr.forEach((item, index) => {
		if (cache.length === 0) {
			// 第一个元素，直接加入cache
			cache.push(item)
		} else if (item === cache[0]) {
			// 如果与cache中的元素相同，说明还是相同子字符串，加入cache
			cache.push(item)
			if (index === strArr.length - 1) {
				// 如果已经是最后一位元素，直接加入pool
				pool.push(cache)
			}
		} else {
			// 如果已经不相同，说明字符串变化，cache加入pool，cache清空开始储存新字符串
			pool.push(cache)
			cache = [item]
			if (index === strArr.length - 1) {
				// 如果已经是最后一位元素，直接加入pool
				pool.push(cache)
			}
		}
	})
	
	pool.map((item) => {
		resObj[item.length] = item
	})
	console.log(resObj)
	let objArr = Object.keys(resObj)
	console.log(objArr)
	if (objArr[n - 1]) {
		// 如果第n名存在
		console.log(`第${n}名的长度是${objArr[n - 1]}，内容为${resObj[objArr[n - 1]]}`)
		return objArr[n - 1]
	} else {
		console.error(`第${n}名不存在`)
	}
}

let str = 'aabbccccdddaaassa'

handle(str, 2)
